package com.ydd.controller.user;


import com.ydd.dto.UserListDTO;
import com.ydd.dto.YddUserDTO;
import com.ydd.entity.YddUser;
import com.ydd.result.Result;
import com.ydd.service.UserService;
import com.ydd.vo.RowInfoVO;
import com.ydd.vo.UserListRequestVO;
import com.ydd.vo.UserListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/ydd_user")
@Api(tags = "用户管理接口")
@Slf4j //日志记录注解
@CrossOrigin
public class UserController {
    //创建一个UserService 的对象，以便后面使用。
    @Autowired
    private UserService userService;

    /*
    @GetMapping("/rowInfo")
    @ApiOperation("用户详情")
    //创建一个对于Result的，包含对应变量的方法以及参数。
    public Result<RowInfoVO> rowInfo(Long id) {
        //记录用户详情的调用日志
        log.info("用户详情:{}", id);
        //将rowInfo（id）的内容转化为userService的形式，并转入新建的rowInfoVO对象
        RowInfoVO rowInfoVO = userService.rowInfo(id);
        //前端返回对应的结果，这个rowInfoVo后面回带着数据库中的内容呈现。
        return Result.success(rowInfoVO);

    }*/

    /**
     * 用户列表
     *
     * @param userListRequestVO
     * @return
     */
    @GetMapping("/list")
    //@PostMapping("/list")
    @ApiOperation("用户列表")
    //前端发来请求，有具体的构造
    public Result<UserListVO> userList(UserListRequestVO userListRequestVO) {
        log.info("用户列表：{}" + userListRequestVO);//记录前端的请求日志
        UserListVO userListVO = userService.userList(userListRequestVO);//创建新对象userListVO,转去service层，并以
        return Result.success(userListVO);//
    }

    /**
     * 用户添加
     *
     * @param
     */
    @PostMapping("/add")
    @ApiOperation("用户添加")
    public Result save(@RequestBody YddUserDTO ydduserDTO) {
        log.info("新增用户+{}", ydduserDTO);
        userService.insert(ydduserDTO);
        return Result.success("新增用户");
    }

    /**
     * 用户删除
     *
     * @param id
     */
    @GetMapping("/del")
    @ApiOperation("用户删除")
    public Result del(Long id) {
        log.info("用户删除+{}" + id);
        userService.del(id);
        return Result.success();
    }

    /**
     * 用户修改
     *
     * @param yddUser
     */
    @PostMapping("/update")
    @ApiOperation("用户修改")
    public Result update(@RequestBody YddUser yddUser) {
        log.info("用户修改+{}" + yddUser);
        userService.update(yddUser);
        return Result.success();
    }

    @GetMapping("/rowInfo")
    @ApiOperation("修改前的根据id查询")
    public Result<YddUser> rowInfo(Integer id){
        YddUser yddUser = userService.selectById(id);
        return Result.success(yddUser);
    }
}
